<?php

namespace app\http\middleware;

use think\Db;
use think\exception\HttpResponseException;
use think\Request;
use think\Response;

class CheckPermission {
    public function handle(Request $request, \Closure $next){
        $user = session('user');
        if($user){
            $role_id = $user['role_id'];
            // 超级管理员直接通过
            if($role_id==1) return $next($request);

            //不是超级管理员那么就检查是否有操作权限
            // 角色拥有的权限
            $rpMap[] = ['arn.is_del','=',0];
            $rpMap[] = ['arn.role_id','=',$role_id];
            $myAll = Db::table('admin_role_node')
                ->alias('arn')
                ->join('admin_node an','arn.node_id=an.node_id')
                ->where($rpMap)
                ->field('an.node_id,m_name,c_name,a_name')
                ->select();

            $myHasP = [];
            foreach ($myAll as $item){
                $myHasP[] = strtolower($item['m_name'].'_'.$item['c_name'].'_'.$item['a_name']);
            }

            //当前操作mca
            $mcaStr = strtolower($request->module().'_'.$request->controller().'_'.$request->action());

            if(in_array($mcaStr,$myHasP)){

                return $next($request);
            } else {

                exit('您没有权限执行该操作 | <a href="javascript:history.back(-1);">返回</a>');
            }

        } else {

            // 登录信息已过期 请重新登录
            return redirect(url('/admin/pub/login'));

        }


    }
}
